現在、opencvで2値化した画像の白のピクセルの平均値を求める
プログラムを作成しています。
C++
1#include<opencv2/opencv.hpp> 2#include<iostream> 3#include<cstdio> 4#include<vector> 5 6using namespace cv; 7using namespace std; 8 9int main(){ 10 cv::VideoCapture cap(0); 11 // 様々な設定... 12 cap.set(CV_CAP_PROP_FRAME_WIDTH, 640); 13 cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480); 14 // カメラがオープンできたかの確認 15 if(!cap.isOpened()) return -1; 16 17 cv::namedWindow("Capture", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO); 18 while (1){ 19 Mat frame,gray,thred,thred_; 20 cap >> frame; 21 cvtColor(frame,gray,CV_BGR2GRAY);//グレースケール化 22 threshold(gray,thred_,60,255,THRESH_BINARY);//2値化 23 cv::bitwise_not(thred_,thred); 24 cv::rectangle(thred, cv::Point(0,0), cv::Point(639,239), cv::Scalar(0,0,0), -1, 0);//上部の塗りつぶし 25 unsigned int total_pixel=0; 26 int pix=0,center=0; 27 for(int y=0; y <479 ;y++) { 28 for(int x=0;x<639;x++){ //ピクセル読み込み 29 if(thred.at<uchar>(y,x)==255){ 30 total_pixel = total_pixel + x; 31 pix++; 32 } 33 } 34 } 35 if(pix != 0){ 36 center = total_pixel/pix; 37 } 38 printf("%d\n",center); 39 imshow("Capture",thred); 40 if(waitKey(30) >= 0)break; 41 } 42}
macbook pro 2015で実行すると動くのですが、ラズパイ3では
一瞬ウィンドウが表示され、while(1){}の部分が一度だけ実行され、
何もエラーもなく終了してしまいます。
試したこと
・プログラムの軽量化(ループ内の処理を減らす)
・他プログラムの実行(カメラ画像を表示するもの)…可能
うまく動かないとはどうなるんでしょうか。
質問を編集して追記してください
至急という情報は不要です。
まず、原因を調べるべきです。ある程度、こうしたのに上手く動かなかったなどの情報があれば答えやすいのですが...
ざっと見た感じだと、#include<opencv2/opencv.hpp>の設定パスが間違っているように思えますね。
適当な質問で本当に申し訳ありません。
コードをmac(opencv3.3.0)で書き、ラズパイで apt-get install libopencv-dev
で導入したopencvでコンパイルして実行しています。
(質問の修正もさせていただきます)
mac 側のopencv 導入はこちらを参考にしました。
https://www.trifields.jp/how-to-install-opencv-on-ubuntu-2742
質問のタイトルにエラーとありますが、エラーが出るとかエラー・メッセージが出るとかないんでしょうか
全くエラーは出ず、1ループだけで終了してしまいます。
回答3件
あなたの回答
tips
プレビュー