opencvで画像上に丸を描画の方法
opencv初心者です。
visualstudio2012 C++でopencvを動かすことはできているのですが、目的としてフルスクリーンに表示した画像の上に2点を丸でいいので表示したいのですが、画像しか表示されない、もしくは画像とは別のウィンドウで丸が表示される状態になっています。
// OpenCV2.4Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
//プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに
// opencv2のあるフォルダ『C:\OpenCV\include』などを追加のこと
#include "opencv2\opencv.hpp"
#include <opencv2/core/core.hpp>
#ifdef _DEBUG
//Debugモードの場合
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts243d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video243d.lib")
#else
//Releaseモードの場合
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts243.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video243.lib")
#endif
//int _tmain(int argc, _TCHAR* argv[])
int gazouhyouzi(){
//画像データの読込
IplImage* src_img = cvLoadImage("C:\\opencv\\samples\\c\\fruits.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if (src_img == NULL){
std::exit(0);
}
//処理後画像データの確保
// IplImage* dst_img = cvCreateImage(cvGetSize(src_img), src_img->depth, src_img->nChannels);
//画像処理例(ガウシアンフィルタ)
// cvSmooth(src_img, dst_img, CV_GAUSSIAN, 9);
//表示ウィンドウの作成
cvNamedWindow("src",0);
//srcというwindowをフルスクリーンに設定
cvSetWindowProperty("src",CV_WND_PROP_FULLSCREEN,CV_WINDOW_FULLSCREEN);
//画像の表示
cvShowImage ("src", src_img);
//キー入力待ち
cvWaitKey (0);
cv::Mat img = cv::Mat::zeros(500, 500, CV_8UC3);
// 画像,円の中心座標,半径,色,線太さ,種類
cv::circle(img, cv::Point(100, 100), 20, cv::Scalar(200,0,0), -1, CV_AA);
//画像データの解放
cvReleaseImage(&src_img);
//全てのウィンドウの削除
cvDestroyAllWindows();
return 0;
}
とても見づらいとは思いますが間違っている部分の訂正をお願いしたく、投稿しました。
初心者なもので言葉の表現が間違っているかも知れませんが、よろしくおねがいします。
ちなみに上記のプログラムで実行すると、画像だけがフルスクリーンに表示されるだけです。
補足
動かしたいプログラムはこれです ーーーー #include <iostream> #include <ws2tcpip.h> #pragma comment(lib,"ws2_32.lib") using namespace std; int main() { int dstSocket; struct sockaddr_in dstAddr; WSADATA data; WSAStartup(MAKEWORD(2,0), &data); // sockaddr_in 構造体のセット memset(&dstAddr, 0, sizeof(dstAddr)); dstAddr.sin_port = htons(80); dstAddr.sin_family = AF_INET; dstAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // ソケットの生成 dstSocket = socket(AF_INET, SOCK_STREAM, 0); ***中略*** // Windows でのソケットの終了 closesocket(dstSocket); WSACleanup(); return(0); } ーーーー コンパイルするとエラーになる *** **** Build of configuration Default for project t001 **** make all g++ -O2 -g -Wall -fmessage-length=0 -c -o ***.o t001.cpp In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/ws2tcpip.h:19, from ***.cpp:2: /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winsock2.h:103:2: warning: #warning "fd_set and associated macros have been defined in sys/types. This may cause runtime problems with W32 sockets" In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/ws2tcpip.h:19, from ***.cpp:2: /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winsock2.h:635: error: declaration of C function `int gethostname(char*, int)' conflicts with /usr/include/sys/unistd.h:206: error: previous declaration `int gethostname(char*, size_t)' here ***.cpp:3: warning: ignoring #pragma comment ***.cpp: In function `int main()': ***.cpp:32: warning: unused variable 'n' make: *** [***.o] Error 1 正直参りました。プログラマになる夢をあきらめるしかないのでしょうか。いま私は絶望の中にいます。